/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.pessoal;

import br.com.saber.certificacao.beansjsf.semescopo.FluxoExibicaoMaster;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
@ManagedBean(name = "fluxoExibicaoPessoal")
@ViewScoped
public class FluxoExibicao extends FluxoExibicaoMaster {

    private boolean exibirAlterarSenha;

    private boolean exibirAlterarDadosPessoais;

    private boolean exibirCertificacoesInteresse;

    private enum PaginaFluxo {

        ALTERAR_SENHA, ALTERAR_DADOS_PESSOAIS, CERTIFICACOES_INTERESSE;

    }

    /** Creates a new instance of FluxoExibicao */
    public FluxoExibicao() {
    }

    //====================
    // Iniciadores
    //====================
    @Override
    @PostConstruct
    public void init() {
        metodoExibirAlterarDadosPessoais();
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Prova:(init()) chamado...");
    }

    @Override
    @PreDestroy
    public void end() {
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Prova: (end()) chamado...");
    }

    public void metodoExibirCertificacaoInteresse() {
        alterarTela(PaginaFluxo.CERTIFICACOES_INTERESSE);
    }
    
    public void metodoExibirAlterarSenha() {
        alterarTela(PaginaFluxo.ALTERAR_SENHA);
    }
    
    public void metodoExibirAlterarDadosPessoais() {
        alterarTela(PaginaFluxo.ALTERAR_DADOS_PESSOAIS);
    }

    private void alterarTela(PaginaFluxo paginaLogin) {
        exibirAlterarSenha = (PaginaFluxo.ALTERAR_SENHA.equals(paginaLogin));
        exibirAlterarDadosPessoais = (PaginaFluxo.ALTERAR_DADOS_PESSOAIS.equals(paginaLogin));
        exibirCertificacoesInteresse = (PaginaFluxo.CERTIFICACOES_INTERESSE.equals(paginaLogin));
        definirAtributos(paginaLogin);
    }

    private void definirAtributos(PaginaFluxo paginaLogin) {
        FacesContext fc = FacesContext.getCurrentInstance();
        switch (paginaLogin) {
            case ALTERAR_SENHA:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelPessoalAlterarSenha", fc);
                this.imgURLNormal = "loginLock_48.png";
                break;
            case ALTERAR_DADOS_PESSOAIS:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelPessoalAlterarDadosPessoais", fc);
                this.imgURLNormal = "user_edit_48.png";
                break;
            case CERTIFICACOES_INTERESSE:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelPessoalCertificacoesInteresse", fc);
                this.imgURLNormal = "certificacao_48.png";
                break;
            default:
                throw new AssertionError("Não foi definido case para a enum: " + paginaLogin.toString());
        }
    }

    //=========================
    //Getters AND Setters
    //=========================
    public boolean isExibirAlterarDadosPessoais() {
        return exibirAlterarDadosPessoais;
    }

    public void setExibirAlterarDadosPessoais(boolean exibirAlterarDadosPessoais) {
        this.exibirAlterarDadosPessoais = exibirAlterarDadosPessoais;
    }

    public boolean isExibirAlterarSenha() {
        return exibirAlterarSenha;
    }

    public void setExibirAlterarSenha(boolean exibirAlterarSenha) {
        this.exibirAlterarSenha = exibirAlterarSenha;
    }

    public boolean isExibirCertificacoesInteresse() {
        return exibirCertificacoesInteresse;
    }

    public void setExibirCertificacoesInteresse(boolean exibirCertificacoesInteresse) {
        this.exibirCertificacoesInteresse = exibirCertificacoesInteresse;
    }
}
